Statistic Disorder—枚举合金结构工具的使用与注意事项
在年初的MS建模公开课上面,我们简单提到过该脚本工具的使用。此后,一直有同学来问要脚本资源和使用方法。今天借着推送脚本干货的机会,和大家说一下怎么去操作的问题。
想听MS建模公开课的小伙伴,可扫描下方二维码进行购买,更多计算好课也可进入店铺购买
首先说明一下,该脚本不是我写的,而是官方给了使用的模板,见MS帮助文件的以下路径:
Scripting in Materials Studio > MaterialsScript API > Tools > Disorder > StatisticalDisorder
我们只是做了修改,我们给出的脚本是:
#!perl
use strict;
use Getopt::Long;
use MaterialsScript qw(:all);
my $disorderedStructure = $Documents{"Ag2.xsd"};
my $results = Tools->Disorder->StatisticalDisorder->GenerateSuperCells
($disorderedStructure,2,2,2);
my $table = $results->StudyTable;
perl脚本头部就不多解释了,这里是定义一个叫做disorderedStructure的标量,里面是一个叫做Ag2.xsd的文件,该文件包含了分数占据合金体系。然后通过调用StatisticalDisorder工具中的GenerateSuperCells function完成该工作(Generates disordered structures based on atom mixtures and occupancy)。
01
GenerateSuperCells function官方的语法说明
object = task->GenerateSuperCells(<source>, <settings>)
Source这里放入的是3D Atomistic Document,所以这里直接用$disorderedStructure指向了那个Ag2.xsd
后面的如果写为1,1,1代表使用原来的晶胞,不做超胞。如果超胞可以自行更高数值(谨慎操作,一不小心就一等几万年),此处是2*2*2超胞。
GenerateSuperCells后面括号里面可以定义的参数远不止这些,还有其他的用法,可以参考Scripting in Materials Studio > MaterialsScript API > Tools > Disorder > StatisticalDisorder > GenerateSuperCells
02
如何构建混合占据的3D Atomistic Document
比如金银1:3的合金构建。
1.导入一个Au或者Ag的晶胞,这个在MS自带的结构中就有。我这里导入的是Ag。
然后选中某个原子(因为对称性问题,你选中了一个其实就是选中了全部,我们此时就是要改变全部的)
2.在左边的Properties窗口找到Is Mixture Atom并双击,
3.按照下图添加Au原子在改位置,
4.修改其中金银在此处的比例,并点击OK。即可得到金银比例为1:3的合金
5.将该文件另存为Ag2.xsd以示区别。
6.再点击看着蓝色的Ag原子,左边Properties窗口的参数就变了,
唯理计算友情提醒:聪明的同学肯定想到了cif文件的语法中本身就有分数占据的定义方法,就是那个_atom_site_occupancy ,那么能不能通过导入定义好分数占据的cif来直接生成Ag2.xsd?答案是否定的。因为MS不能很好识别分数占据cif,而且你够建好的Ag2.xsd也是无法导出成分数占据cif的。
03
如何运行脚本
此时需要把我们提供的Disorder.pl放到和Ag2.xsd在同一路径下。然后点击图中的下拉三角,设置脚本在什么地方运行,这种耗时费力的计算,建议用服务器算。当然本文例子计算量很小,办公电脑就能做,选择my computer就可以。
然后点击Run on server。当然你也可以直接点击那个三角形的运行按键,那个就是直接在当前电脑做。
一般不会有报错的情况,如果出现报错,大家仔细看一下,分数占据时候指定的比例,能不能在指定的超胞结构中实现,如果无法实现要扩胞或者及时修改。比如某体系扩胞后总共32个原子,你这边指定9:1的合金结构就属于为难软件了。
当前的计算体系,我以1*1*1的胞去生成,得到如下结构
Report中写入如下信息:
Enumeration of Disorder:
Substitutions:
Ag:0.75 (a)
Au:0.25 (b)
Weighted Configurations: 1 out of 4
4:baaa
原本一个胞内4个原子,替换掉其中一个就是对的,那么理论上有4种可能的结构,但其实都等效于上述看到的结构,所以才会在报告中那么去写。
2*2*2的胞报告如下:
Enumeration of Disorder:
Substitutions:
Ag:0.75 (a)
Au:0.25 (b)
Weighted Configurations: 8043 out of 10518300
32:baaaaaabbaaaaaababaaaabaabaaaaba
192:baaaaaabbaaaaaabbaaaaaababaaaaba
32:baaaaaabbaaaaaabbaaaaaabbaaaaaab
192:baabaaaaaaaabaabbaaaaaabaaabbaaa
384:baabaaaaaaaabaabbaaaaaababaaaaba
192:baabaaaaaaaabaabbaaaaaabbaaaaaab
。
。
。
能够看懂1*1*1 的,再看这个没有难度了。
无论是哪个计算,算完后打开Ag2_Disorder.std,双击Structures那一列 任意一个结构都能够出现符合比例要求的结构。
本期附件为1*1*1和2*2*2计算的原始文件,使用2019和2020版可以直接打开,其他版本同学可以使用里面提供的脚本文件,自行创建合金结构去学习使用。
大家应该感受到了2*2*2的数据量之巨,有没有办法少生成点?大家可以参考如下脚本写法去设置:
my $disorderTask = Tools->Disorder->StatisticalDisorder;
my $results = $disorderTask->GenerateSuperCells
($disorderedStructure,
2,2,2,
Settings(MaxStructures => 100));
my $table = $results->StudyTable;
print "The limit on the number of disordered structures was exceeded!\n"
if ($results->ExceededMaxStructures);
本文留下2个思考:
1.如果把这个枚举脚本,用作生成原子空穴,那么该如何设置?
2.用2*2*2超胞生成的合金和用1*1*1生成之后再去超胞变成2*2*2,两者有什么区别?
附件获取后台回复:0625
END
万众期待的Python课终于来啦!
0基础+免费学+清华大牛还不心动?
转发下方海报集赞即可免费学习
联系小鱼师妹:18310372802(微信同)
往期推荐
感谢与热爱计算的你相遇↓↓↓